﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BL;
using BE;
using System.Data;
using CrystalDecisions.Shared;
using System.Diagnostics;
using System.IO;
using System.Drawing.Printing;

namespace UI.Programas
{
    public partial class FrmAlumnosProgramas : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack) {

                LLenarCombo();
                LLenarComboAula();
            
            }

        }


        private void LLenarCombo(){
            
            CertificadoProgramas_BL certificadobl=new CertificadoProgramas_BL();
            ComboPrograma.DataSource= certificadobl.ObtenerProgramas();
            ComboPrograma.DataTextField = "Descripcion";
            ComboPrograma.DataValueField = "ID";
            ComboPrograma.DataBind();


            ComboPrograma.Items.Insert(0, "--Todos--");
            LLenarComboAula();
        }



        protected void btnBuscar_Click1(object sender, EventArgs e)
        {
            try
            {
                String codigo = txtCodigo.Text;
                String nombre = txtNombre.Text;
                String programa = ComboPrograma.SelectedItem.Value;
                String aula = ComboAula.SelectedItem.Value;
                String ciclo = ComboCiclo.SelectedItem.Value;
                bool nombreCambiado = CheckNombreCambiado.Checked;


                CertificadoProgramas_BL certificado = new CertificadoProgramas_BL();
                DataTable listado = certificado.ListadoAlumnos(codigo, nombre, programa, ciclo, aula, nombreCambiado);
                llenarTablaAlumnos(listado);
                    
            }
            catch (Exception ex)
            {

                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "Se produjo el siguiete error :" + ex.Message + "');", true);
                return;
            }

        }


        private void llenarTablaAlumnos(DataTable listado)
        {
            try
            {
                if (listado.Rows.Count == 0) {
                    gridListadoAlumnos.Caption = "No se encontro ningun alumno";
                }

                gridListadoAlumnos.DataSource = listado;
                gridListadoAlumnos.DataBind();
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "Se produjo el siguiete error :" + ex.Message + "');", true);

            }
        }

        protected void gridListadoAlumnos_SelectedIndexChanged(object sender, EventArgs e)
        {

            String CodigoAlumno = gridListadoAlumnos.SelectedRow.Cells[0].Text;



            if (GenerarReporte(CodigoAlumno))
            {
                string script = "AbrirVentana('FrmCertificadosAlumnosPDF.aspx')";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "popup", script, true);
            }   
            

   
        }


        private bool GenerarReporte(String Codigo)
        {
            LabelError.Text = "";
            try
            {
                //CertificadoProgramas reporte = new CertificadoProgramas();
                certifica reporte = new certifica();
                CertificadoProgramas_BL certificado = new CertificadoProgramas_BL();
                DataTable lista = certificado.obtenerCertificadoAlumno(Codigo);
                if (lista.Rows.Count == 0)
                {
                    LabelError.Text = "No se encontraron registros";
                    ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "No se encontraron registros :" + "" + "');", true);
                    return false;
                }

                reporte.SetDataSource(lista);

                ExportOptions CrExportOptions;
                DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
                PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();



                String rutaarchivo = System.IO.Path.GetTempFileName() + ' '+Codigo+' '+Guid.NewGuid() + ".pdf";
                CrDiskFileDestinationOptions.DiskFileName = rutaarchivo;

                Session["RutaReporte"] = rutaarchivo;

                CrExportOptions = reporte.ExportOptions;
                {
                    CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
                    CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
                    CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
                    CrExportOptions.FormatOptions = CrFormatTypeOptions;
                }
                reporte.Export();

                //reporte.PrintOptions.PrinterName = "HP LaserJet P2050 Series PCL6";
                //reporte.PrintToPrinter(1, true, 1, 1);
                
                reporte.Close();
                return true;
            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message;
                return false;
            }
        }



        public string ObtenerImpresoraPorDefecto()
        {
            string NombreImpresora = "";
            for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
            {
                PrinterSettings a = new PrinterSettings();
                a.PrinterName = PrinterSettings.InstalledPrinters[i].ToString();
                if (a.IsDefaultPrinter)
                {
                    NombreImpresora = PrinterSettings.InstalledPrinters[i].ToString();
                    break;
                }
            }
            return NombreImpresora;
        }

        protected void gridListadoAlumnos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            String codigo = txtCodigo.Text;
            String nombre = txtNombre.Text;
            String programa = ComboPrograma.SelectedItem.Value;
            String ciclo = ComboCiclo.SelectedItem.Value;
            String aula = ComboAula.SelectedItem.Value;

            bool nombreCambiado = CheckNombreCambiado.Checked;

            CertificadoProgramas_BL certificado = new CertificadoProgramas_BL();
            DataTable listado = certificado.ListadoAlumnos(codigo, nombre, programa, ciclo, aula, nombreCambiado);
            gridListadoAlumnos.PageIndex = e.NewPageIndex;
            llenarTablaAlumnos(listado);
        }

        protected void ComboCiclo_SelectedIndexChanged(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {
                LLenarComboAula();

            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }

        }

        private void LLenarComboAula()
        {
            LabelError.Text = "";
            try
            {
                CertificadoProgramas_BL cert = new CertificadoProgramas_BL();
                String programa = ComboPrograma.SelectedItem.Value;
                String ciclo = ComboCiclo.SelectedItem.Value;
                ComboAula.DataSource= cert.ObtenerAulaPrograma(programa, ciclo);
                ComboAula.DataTextField = "Aula";
                ComboAula.DataValueField = "Aula";
                ComboAula.DataBind();
                
                ComboAula.Items.Insert(0, "--Todos--");

            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }

        protected void ComboPrograma_SelectedIndexChanged(object sender, EventArgs e)
        {
            LabelError.Text = "";
            try
            {

                LLenarComboAula();

            }
            catch (Exception ex)
            {
                LabelError.Text = ex.Message.ToString();
            }
        }


    }
}